/**
 * AJax 请求函数模块
 */
import axios from 'axios'

export default function (url = '', data = {}, type = 'GET') {
  // 高阶函数是一个函数，它接收函数作为参数或将函数作为输出返回。
  return new Promise((resolve, reject) => {
    let promise
    // 处理数据  
    if (type === 'GET') {
      let dataStr = '';
      // Object.keys 返回由一个给定对象的自身可枚举自身属性组成的数组
      // obj
      // 例如
      /* var anObj = { 100: 'a', 2: 'b', 7: 'c' };
      console.log(Object.keys(anObj)); // console: ['2', '7', '100'] */
      Object.keys(data).forEach(key => {
        dataStr += key + '=' + data[key] + '&';
      })

      // 去除最后一个的 & 号
      if (dataStr !== '') {
        dataStr = '?' + dataStr.substr(0, dataStr.length - 1)
      }

      // 发送 GET 请求
      promise = axios.get(url + dataStr);
    } else {
      // 发送 POST 请求
      promise = axios.post(url, data)
    }

    promise.then((response) => {
      // 成功之后调用 resolve
      resolve(response.data)
    }).catch((error) => {
      // 失败之后调用 reject
      reject(error)
    })

  })
}
